<?php
/**
 * Created by PhpStorm.
 * User: mingzhongshui
 * Date: 2020/4/6
 * Time: 20:37
 */

namespace App\Services;

/**
 * class Wechat
 * @package App\Traits
 */
class Wechat
{

    static $instance = null;

    /**
     * Wechat constructor.
     * @param array $config
     */
    public function __construct($config = [])
    {

    }

    /**
     * 发送微信模板消息
     * 
     * @param $openId
     * @param $msg
     * @param string $uri
     * @param string $url
     * @return mixed
     */
    public function sendWxTplMsg($openId, $msg, $uri = '', $url = '')
    {
        $app = app('wechat.official_account');

        return $app->template_message->send([
            'touser'      => $openId,
            'template_id' => env('WECHAT_TPL_NOTICE'),
            'url'         => $url ? $url : $this->getFrontUrl($uri),
            'data' => [
                'first' => [
                    'value' => $msg,
                ],
                'keyword1' => [
                    'value' => '系统消息',
                ],
                'keyword2' => [
                    'value' => date('Y-m-d H:i'),
                ],
                'remark' => [
                    'value' => ''
                ]
            ],
        ]);
    }

    /**
     * @param string $uri
     * @return mixed|string
     */
    public function getFrontUrl($uri = '')
    {
        $url = env('WECHAT_FRONT_URL');

        if ($uri) {
            $url .= ltrim($uri, '/');
        }

        return $url;
    }

    /**
     * 转账到个人（openid）
     *
     * @param $tradeNo
     * @param $openid
     * @param $price (单位：分)
     * @param $desc
     * @return mixed
     */
    public function transferUserToOpenid($tradeNo, $openid, $price, $desc)
    {
        $app = app('wechat.payment');

        return $app->transfer->toBalance([
            'partner_trade_no' => $tradeNo, // 商户订单号，需保持唯一性(只能是字母或者数字，不能包含有符号)
            'openid'           => $openid,
            'check_name'       => 'NO_CHECK', // NO_CHECK：不校验真实姓名, FORCE_CHECK：强校验真实姓名
            're_user_name'     => '', // 如果 check_name 设置为FORCE_CHECK，则必填用户真实姓名
            'amount'           => $price, // 企业付款金额，单位为分
            'desc'             => $desc, // 企业付款操作说明信息。必填
        ]);
    }




}